package com.sudichina.sudichina.view.activity.main;


import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

import com.sudichina.sudichina.utils.ActivityFinishUtils;
import com.sudichina.sudichina.utils.L;
import com.sudichina.sudichina.view.activity.login.LoginActivity;


/**
 * Created by yangw on 2017/3/2.
 */
public class BaseActivity extends AppCompatActivity {


    /**
     * 定位权限
     * Manifest.permission.ACCESS_COARSE_LOCATION,
     * Manifest.permission.ACCESS_FINE_LOCATION,
     * Manifest.permission.WRITE_EXTERNAL_STORAGE,
     * Manifest.permission.READ_EXTERNAL_STORAGE,
     * Manifest.permission.READ_PHONE_STATE
     */
    // 要申请的权限
    private String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.READ_PHONE_STATE

    };


    protected final String HTTP_TASK_KEY = "HttpTaskKey_" + hashCode();


    /**
     * oncreat 方法  生命周期的第一个方法  创建 activitty方法
     *
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        // 版本判断。当手机系统大于 23 时，才有必要去判断权限是否获取
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

            // 检查该权限是否已经获取
            int i = ContextCompat.checkSelfPermission(this, permissions[0]);
            // 权限是否已经 授权 GRANTED---授权  DINIED---拒绝
            if (i != PackageManager.PERMISSION_GRANTED) {
                // 如果没有授予该权限，就去提示用户请求

                startRequestPermission();
            }
        }
    }

    private void startRequestPermission() {

        ActivityCompat.requestPermissions(this, permissions, 321);


    }


    // 用户权限 申请 的回调方法
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == 321) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
                    // 判断用户是否 点击了不再提醒。(检测该权限是否还可以申请)
                    boolean b = shouldShowRequestPermissionRationale(permissions[0]);
                    if (!b) {
                        // 用户还是想用我的 APP 的
                        // 提示用户去应用设置界面手动开启权限
                        //
                    } else
                        finish();
                } else {
                    Toast.makeText(this, "权限获取成功", Toast.LENGTH_SHORT).show();
                }
            }
        }


    }


    //这个方法 是判断用户是否登录 如果不需要每个界面都判断 只需要将该方法换个名字 然后在子类中访问就可以了就可以
    @Override
    protected void onStart() {
        super.onRestart();
        //记录activity到集合
        ActivityFinishUtils.addActivity(this);


    }


    /**
     * 获取上下文
     *
     * @return
     */

    public Context getConText() {
        return this;
    }


    /**
     * 销毁界面的方法  在这可以取消当前界面的网络请求
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();


    }

    public static void gotoMainActivity(Context context, Object bean) {
        L.e("-----------", "gotoMainActivity");

        Intent intent = new Intent(context, LoginActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

}
